package sige

class ContratoService {

    def inserirRendimentos(Contrato contrato) {
        contrato.turma.materias.each{ materia ->
            RendimentoEscolar rendimento = new RendimentoEscolar()
            rendimento.materia = materia
            contrato.addToRendimentos(rendimento)
            rendimento.save()
        }
        contrato.save(flush: true)
    }
    
    def inserirAnuidade(contrato, Date mesBase){
        
        
        def turma = Turma.get( contrato.turma.id )
        def serie = Serie.get( turma.serie.id )
        def ano = AnoLetivo.get( turma?.ano?.id )
        
        
        def anuidade = new DespesaVariavel()
        anuidade.descricao = "Anuidade do aluno ${contrato?.aluno}"
        anuidade.ordem = Ordem.get(2)
        anuidade.valorBase = serie?.valor
        anuidade.sazonalidade = "Mensal"
        
        Calendar c
        if(ano.dataDeInicio < mesBase ){
            c = mesBase.toCalendar()
            println "começou na data do contrato"
        }else{
            c = ano.dataDeInicio.toCalendar()
            println "começou na data do ano letivo"
        }
        c[Calendar.DATE] = 10
        anuidade.dataDeVencimento = c.time
        
        Calendar d = ano.dataDeFechamento.toCalendar()
        
        anuidade.numeroDeParcelas = d[Calendar.MONTH] - c[Calendar.MONTH]
        
        if(!anuidade.save( )){
            println (anuidade.errors)
            return false
        }
        
        contrato.anuidade = anuidade
        contrato.save( flush: true )
        
        DispesaVariavelService service = new DispesaVariavelService()
        service.inserir(anuidade)
        
    }
    
    void inserirPagamento(def anuidade, Date data, double valor){
        println "Chamou inserir"
        Pagamento p = new Pagamento()
        p.dataDeVencimento = data
        p.valor = valor
        p.movimentacao = anuidade
        p.save(flush: true)
    }
}
